#include "array.h"

namespace rt
{

Array::Array()
{
    d[0]=0;d[1]=0;d[2]=0;d[3]=1.0;
}

Array::Array(double a, double b, double c)
{
    d[0]=a;d[1]=b;d[2]=c;d[3]=1.0;
}

boost::array<double,4> Array::data()
{
    return d;
}

double Array::data(int n)
{
    return d[n];
}

void Array::setData(int n,double a)
{
    d[n]=a;
}

void Array::setZeros()
{
    d[0]=0;d[1]=0;d[2]=0;d[3]=1.0;
}

void Array::setOnes()
{
    d[0]=1.0;d[1]=1.0;d[2]=1.0;d[3]=1.0;
}

void Array::setAll(double a,double b,double c){
    d[0]=a;d[1]=b;d[2]=c;d[3]=1.0;
}

Array Array::operator+(Array &a)
{
    return Array(a.data(0)+d[0],a.data(1)+d[1],a.data(2)+d[2]);

}

Array Array::operator-(Array &a)
{
    return Array(a.data(0)-d[0],a.data(1)-d[1],a.data(2)-d[2]);
}

double Array::operator*(Array &a)
{
    return double(a.data(0)*d[0]+a.data(1)*d[1]+a.data(2)*d[2]);
}

void Array::operator=(Array a)
{
    this->setData(0,a.data(0));
    this->setData(1,a.data(1));
    this->setData(2,a.data(2));
    this->setData(3,a.data(3));
}

}
